package com.example.service;

import com.example.common.Result;
import com.example.dto.PermissionDTO;
import com.example.vo.PermissionVO;

import java.util.List;

public interface PermissionService {
    
    /**
     * 新增权限
     */
    Result<String> addPermission(PermissionDTO permissionDTO);
    
    /**
     * 修改权限
     */
    Result<String> updatePermission(Long id, PermissionDTO permissionDTO);
    
    /**
     * 删除权限
     */
    Result<String> deletePermission(Long id);
    
    /**
     * 根据ID查询权限
     */
    Result<PermissionVO> getPermissionById(Long id);
    
    /**
     * 查询所有权限（树形结构）
     */
    Result<List<PermissionVO>> getAllPermissions();
    
    /**
     * 根据权限类型查询权限
     */
    Result<List<PermissionVO>> getPermissionsByType(String permissionType);
    
    /**
     * 查询启用的权限
     */
    Result<List<PermissionVO>> getEnabledPermissions();
    
    /**
     * 根据父级ID查询子权限
     */
    Result<List<PermissionVO>> getPermissionsByParentId(Long parentId);
    
    /**
     * 根据用户ID获取用户权限编码列表
     */
    List<String> getUserPermissions(Long userId);
    
    /**
     * 根据权限编码获取权限描述
     */
    String getPermissionDescription(String permissionCode);
} 